<?php

if (! defined ( 'BASEPATH' ))
	exit ( 'No direct script access allowed' );
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 5.1.6 or newer
 *
 * @package		CodeIgniter
 * @author		ExpressionEngine Dev Team
 * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc.
 * @license		http://codeigniter.com/user_guide/license.html
 * @link		http://codeigniter.com
 * @since		Version 1.0
 * @filesource
 */

// ------------------------------------------------------------------------


/**
 * CodeIgniter Download Helpers
 *
 * @package		CodeIgniter
 * @subpackage	Helpers
 * @category	Helpers
 * @author		ExpressionEngine Dev Team
 * @link		http://codeigniter.com/user_guide/helpers/download_helper.html
 */

// ------------------------------------------------------------------------


/**
 * Force Download
 *
 * Generates headers that force a download to happen
 *
 * @access	public
 * @param	string	filename
 * @param	mixed	the data to be downloaded
 * @return	void
 */
if (! function_exists ( 'force_download' )) {
	function force_download($filename = '', $data = '') {
		if ($filename == '' or $data == '') {
			return FALSE;
		}
		
		// Try to determine if the filename includes a file extension.
		// We need it in order to set the MIME type
		if (FALSE === strpos ( $filename, '.' )) {
			return FALSE;
		}
		
		// Grab the file extension
		$x = explode ( '.', $filename );
		$extension = end ( $x );
		
		// Load the mime types
		if (defined ( 'ENVIRONMENT' ) and is_file ( APPPATH . 'config/' . ENVIRONMENT . '/mimes.php' )) {
			include (APPPATH . 'config/' . ENVIRONMENT . '/mimes.php');
		} elseif (is_file ( APPPATH . 'config/mimes.php' )) {
			include (APPPATH . 'config/mimes.php');
		}
		
		// Set a default mime if we can't find it
		if (! isset ( $mimes [$extension] )) {
			$mime = 'application/octet-stream';
		} else {
			$mime = (is_array ( $mimes [$extension] )) ? $mimes [$extension] [0] : $mimes [$extension];
		}
		
		// Generate the server headers
		if (strpos ( $_SERVER ['HTTP_USER_AGENT'], "MSIE" ) !== FALSE) {
			header ( 'Content-Type: "' . $mime . '"' );
			header ( 'Content-Disposition: attachment; filename="' . $filename . '"' );
			header ( 'Expires: 0' );
			header ( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
			header ( "Content-Transfer-Encoding: binary" );
			header ( 'Pragma: public' );
			header ( "Content-Length: " . strlen ( $data ) );
		} else {
			header ( 'Content-Type: "' . $mime . '"' );
			header ( 'Content-Disposition: attachment; filename="' . $filename . '"' );
			header ( "Content-Transfer-Encoding: binary" );
			header ( 'Expires: 0' );
			header ( 'Pragma: no-cache' );
			header ( "Content-Length: " . strlen ( $data ) );
		}
		
		exit ( $data );
	}
}


/* End of file download_helper.php */
/* Location: ./system/helpers/download_helper.php */